home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / cave / code.lua next >
Encoding:
Text File  |  2005-07-16  |  11.6 KB  |  332 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     sound_playMusic("music/rybky05.ogg")
  8.     local pokus = getRestartCount()
  9.  
  10.  
  11.     -- -------------------------------------------------------------
  12.     local function prog_init_room()
  13.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  14.  
  15.         room.vzperac = 0
  16.         room.blbecek = 0
  17.         room.neprojedu = 0
  18.         room.orybe = 0
  19.         room.kecy = 0
  20.         room.potvurka = 0
  21.         room.onetopyrovi = 0
  22.  
  23.         return function()
  24.             if isReady(small) and isReady(big) and no_dialog() then
  25.                 if look_at(small, netopyr) and small.Y > 17 and small.Y < 22 and room.vzperac == 0 and (netopyr.afaze == 2 or netopyr.afaze == 3) and random(100) < 4 then
  26.                     addm(random(20), "jes-m-netopyr")
  27.                     addv(random(5), "jes-v-tojo")
  28.                     room.vzperac = 1
  29.                 elseif look_at(small, blbec) and dist(small, blbec) < 3 and room.blbecek == 0 and random(100) < 2 then
  30.                     addm(random(5), "jes-m-tvor")
  31.                     room.blbecek = 1
  32.                 elseif big.X == 3 and big.Y == 15 and tycka.X == 10 and tycka.Y == 15 and room.neprojedu == 0 and random(100) < 3 then
  33.                     addv(0, "jes-v-uzke")
  34.                     room.neprojedu = 1
  35.                 elseif look_at(small, rybka) and tycka.X == 10 and tycka.Y == 17 and random(100) < 30 and room.orybe == 0 then
  36.                     room.orybe = 1
  37.                     addm(random(5), "jes-m-ryba")
  38.                     addv(random(5), "jes-v-kamen")
  39.                 elseif random(1000) < 3 and room.kecy == 0 then
  40.                     switch(random(3)){
  41.                         [0] = function()
  42.                             addv(random(5), "jes-v-gral")
  43.                         end,
  44.                         [1] = function()
  45.                             addv(random(5), "jes-v-gral")
  46.                             addm(random(5), "jes-m-deprese")
  47.                         end,
  48.                         [2] = function()
  49.                             addv(random(5), "jes-v-gral")
  50.                             addm(random(5), "jes-m-deprese")
  51.                             addv(random(5), "jes-v-nevim")
  52.                         end,
  53.                     }
  54.                     room.kecy = 1
  55.                 elseif room.kecy == 1 and big.Y > 19 and random(100) < 30 then
  56.                     addm(random(5), "jes-m-takvidis")
  57.                     room.kecy = 2
  58.                 elseif room.potvurka == 0 and random(100) < 5 and look_at(small, das) and dist(small, das) < 4 then
  59.                     switch(random(3)){
  60.                         [0] = function()
  61.                             addm(1, "jes-m-potvora0")
  62.                         end,
  63.                         [1] = function()
  64.                             addm(1, "jes-m-potvora1")
  65.                         end,
  66.                         [2] = function()
  67.                             addm(1, "jes-m-potvora2")
  68.                         end,
  69.                     }
  70.                     switch(random(3)){
  71.                         [0] = function()
  72.                             addv(random(5), "jes-v-potvora0")
  73.                         end,
  74.                         [1] = function()
  75.                             addv(random(5), "jes-v-potvora1")
  76.                         end,
  77.                         [2] = function()
  78.                             addv(random(5), "jes-v-potvora2")
  79.                         end,
  80.                     }
  81.                     room.potvurka = 1
  82.                 elseif room.onetopyrovi == 0 and look_at(small, netopyr) and dist(small, netopyr) < 4 and random(1000) < 2 then
  83.                     room.onetopyrovi = 1
  84.                     addm(1, "jes-m-netopyr0")
  85.                     switch(random(3)){
  86.                         [0] = function()
  87.                             addv(random(5), "jes-v-netopyr0")
  88.                         end,
  89.                         [1] = function()
  90.                             addv(random(5), "jes-v-netopyr1")
  91.                         end,
  92.                         [2] = function()
  93.                             addv(random(5), "jes-v-netopyr2")
  94.                         end,
  95.                     }
  96.                     switch(random(3)){
  97.                         [0] = function()
  98.                             addm(random(5), "jes-m-netopyr1")
  99.                         end,
  100.                         [1] = function()
  101.                             addm(random(5), "jes-m-netopyr2")
  102.                         end,
  103.                         [2] = function()
  104.                             addm(random(5), "jes-m-netopyr3")
  105.                         end,
  106.                     }
  107.                 elseif room.potvurka == 1 and das.X == 17 and das.Y == 7 and random(1000) < 4 then
  108.                     switch(random(2)){
  109.                         [0] = function()
  110.                             addv(random(5), "jes-v-nechut0")
  111.                         end,
  112.                         [1] = function()
  113.                             addv(random(5), "jes-v-nechut1")
  114.                         end,
  115.                     }
  116.                     room.potvurka = 2
  117.                 end
  118.             end
  119.         end
  120.     end
  121.  
  122.     -- -------------------------------------------------------------
  123.     local function prog_init_netopyr()
  124.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  125.  
  126.         netopyr.kridla = -(1 * (random(200) + 20))
  127.         netopyr.oci = 0
  128.         netopyr.vzpira = 0
  129.  
  130.         return function()
  131.             if netopyr.oci == 0 and random(100) < 30 then
  132.                 netopyr.oci = 1
  133.             elseif random(100) < 60 then
  134.                 netopyr.oci = 0
  135.             end
  136.             if tycka.X == 10 and tycka.Y == 15 and vaza.X == 18 and vaza.Y == 16 and netopyr.X == 18 and netopyr.Y == 19 then
  137.                 if netopyr.kridla < 0 then
  138.                     netopyr.kridla = netopyr.kridla + 1
  139.                 elseif netopyr.kridla == 0 and netopyr.vzpira < 7 and tycka.X == 10 and tycka.Y == 15 and vaza.X == 18 and vaza.Y == 16 and netopyr.X == 18 and netopyr.Y == 19 then
  140.                     netopyr.afaze = netopyr.oci + 2
  141.                     netopyr.vzpira = netopyr.vzpira + 1
  142.                 elseif netopyr.vzpira >= 7 and netopyr.kridla == 0 then
  143.                     netopyr.vzpira = 0
  144.                     netopyr.kridla = -(1 * (random(300) + 5))
  145.                     netopyr.afaze = netopyr.oci
  146.                 end
  147.             else
  148.                 netopyr.afaze = netopyr.oci
  149.             end
  150.             netopyr:updateAnim()
  151.         end
  152.     end
  153.  
  154.     -- -------------------------------------------------------------
  155.     local function prog_init_tycka()
  156.         return function()
  157.             if netopyr.afaze == 2 or netopyr.afaze == 3 then
  158.                 tycka.afaze = 1
  159.             else
  160.                 tycka.afaze = 0
  161.             end
  162.             tycka:updateAnim()
  163.         end
  164.     end
  165.  
  166.     -- -------------------------------------------------------------
  167.     local function prog_init_das()
  168.         return function()
  169.             switch(das.afaze){
  170.                 [1] = function()
  171.                     if random(100) < 10 then
  172.                         das.afaze = 6
  173.                     else
  174.                         das.afaze = das.afaze + 1
  175.                     end
  176.                 end,
  177.                 [5] = function()
  178.                     das.afaze = 0
  179.                 end,
  180.                 [8] = function()
  181.                     das.afaze = 5
  182.                 end,
  183.                 default = function()
  184.                     das.afaze = das.afaze + 1
  185.                 end,
  186.             }
  187.             das:updateAnim()
  188.         end
  189.     end
  190.  
  191.     -- -------------------------------------------------------------
  192.     local function prog_init_blbec()
  193.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  194.  
  195.         blbec.faze = 0
  196.         blbec.udivenej = 0
  197.  
  198.         return function()
  199.             if math.mod(game_getCycles(), 2) == 0 then
  200.                 switch(blbec.faze){
  201.                     [0] = function()
  202.                         blbec.faze = blbec.faze + 1
  203.                     end,
  204.                     [1] = function()
  205.                         blbec.faze = blbec.faze + 1
  206.                     end,
  207.                     [2] = function()
  208.                         blbec.faze = 0
  209.                     end,
  210.                 }
  211.             end
  212.             if blbec.dir ~= dir_no then
  213.                 blbec.udivenej = random(100) + 30
  214.             end
  215.             if blbec.udivenej > 0 then
  216.                 blbec.udivenej = blbec.udivenej - 1
  217.                 if random(100) < 20 then
  218.                     blbec.afaze = 3 * blbec.faze + 1
  219.                 else
  220.                     blbec.afaze = 3 * blbec.faze + 2
  221.                 end
  222.             else
  223.                 blbec.afaze = 3 * blbec.faze
  224.             end
  225.             blbec:updateAnim()
  226.         end
  227.     end
  228.  
  229.     -- -------------------------------------------------------------
  230.     local function prog_init_rybka()
  231.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  232.  
  233.         rybka.faze = -random(200) - 100
  234.  
  235.         return function()
  236.             switch(rybka.faze){
  237.                 [1] = function()
  238.                     rybka.afaze = 2
  239.                     if random(100) < 25 then
  240.                         rybka.faze = rybka.faze + 1
  241.                     end
  242.                 end,
  243.                 [2] = function()
  244.                     rybka.afaze = 1
  245.                     rybka.faze = rybka.faze + 1
  246.                 end,
  247.                 [3] = function()
  248.                     rybka.afaze = 3
  249.                     if random(100) < 25 then
  250.                         rybka.faze = rybka.faze + 1
  251.                     end
  252.                 end,
  253.                 [4] = function()
  254.                     rybka.afaze = 1
  255.                     if random(100) < 15 then
  256.                         rybka.faze = 1
  257.                     else
  258.                         rybka.faze = -random(200) - 100
  259.                     end
  260.                 end,
  261.                 default = function()
  262.                     if rybka.faze >= -10 and rybka.faze <= 0 then
  263.                         rybka.afaze = 1
  264.                         rybka.faze = rybka.faze + 1
  265.                     else
  266.                         rybka.afaze = 0
  267.                         rybka.faze = rybka.faze + 1
  268.                     end
  269.                 end
  270.             }
  271.             rybka:updateAnim()
  272.         end
  273.     end
  274.  
  275.     -- -------------------------------------------------------------
  276.     local function prog_init_vaza()
  277.         return function()
  278.             if netopyr.afaze == 2 or netopyr.afaze == 3 then
  279.                 vaza.afaze = 1
  280.             else
  281.                 vaza.afaze = 0
  282.             end
  283.             vaza:updateAnim()
  284.         end
  285.     end
  286.  
  287.     -- --------------------
  288.     local update_table = {}
  289.     local subinit
  290.     subinit = prog_init_room()
  291.     if subinit then
  292.         table.insert(update_table, subinit)
  293.     end
  294.     subinit = prog_init_netopyr()
  295.     if subinit then
  296.         table.insert(update_table, subinit)
  297.     end
  298.     subinit = prog_init_tycka()
  299.     if subinit then
  300.         table.insert(update_table, subinit)
  301.     end
  302.     subinit = prog_init_das()
  303.     if subinit then
  304.         table.insert(update_table, subinit)
  305.     end
  306.     subinit = prog_init_blbec()
  307.     if subinit then
  308.         table.insert(update_table, subinit)
  309.     end
  310.     subinit = prog_init_rybka()
  311.     if subinit then
  312.         table.insert(update_table, subinit)
  313.     end
  314.     subinit = prog_init_vaza()
  315.     if subinit then
  316.         table.insert(update_table, subinit)
  317.     end
  318.     return update_table
  319. end
  320. local update_table = prog_init()
  321.  
  322.  
  323. -- -----------------------------------------------------------------
  324. -- Update
  325. -- -----------------------------------------------------------------
  326. function prog_update()
  327.     for key, subupdate in pairs(update_table) do
  328.         subupdate()
  329.     end
  330. end
  331.  
  332.